/*
 * ConstantesGenerales.java
 *
 * Created on 13 de septiembre de 2007, 09:50 AM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.src.computec.radar.despachos.base.constantes;

import com.src.computec.radar.base.source.CoreSource;
import com.src.computec.radar.base.util.RandomStringUtils;
import com.src.computec.radar.despachos.source.DespachosSource;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Hashtable;
import java.util.Locale;

/**
 *
 * @author aocampo
 */
public class ConstantesGenerales {
    
    protected static ConstantesGenerales instance;
    public static Locale LOCALE_DEFAULT = Locale.getDefault();
    public static String FACTORYDAO_CLASSNAME;
    public static String SCHEMA;
    public static DecimalFormat DECIMAL_FORMAT;
    public static SimpleDateFormat SIMPLE_DATE_FORMAT;
    public static SimpleDateFormat SHORT_SIMPLE_DATE_FORMAT;
    public static SimpleDateFormat SHORT_SIMPLE_DATE_FORMAT_TO_HELP;
    public static SimpleDateFormat SHORT_SIMPLE_DATE_FORMAT_TO_HELP_AUX;
    
    public static String CODIGO_GESTION_ENVIO_ALISTAMIENTO;
    public static String CODIGO_GESTION_ENVIO_DESPACHO;
    public static String CODIGO_GESTION_ENVIO_TRANSPORTE;
    public static String CODIGO_GESTION_ENVIO_DISTRIBUCION;
    public static String CODIGO_GESTION_ENVIO_ENTREGA;
    public static String CODIGO_GESTION_ENVIO_ENTREGA_NO_CERTIFICADA;
    public static String CODIGO_GESTION_ENVIO_DISTRIBUCION_EXTERNA;
    
    public static String CODIGO_PROVEEDOR_COMPUTEC;
    public static String CODIGO_PROVEEDOR_NO_ASIGNADO;
    public static String CODIGO_ESTADO_DESPACHO_ABIERTO;
    public static String CODIGO_ESTADO_DESPACHO_EN_TRANSPORTE;
    public static String CODIGO_ESTADO_DESPACHO_ENTREGADO_INCOMPLETO;
    public static String CODIGO_ESTADO_DESPACHO_ENTREGADO;   
    public static String CODIGO_ESTADO_CAJA_ABIERTA;
    public static String CODIGO_ESTADO_CAJA_CERRADA;
    public static String CODIGO_ESTADO_CAJA_EN_TRANSPORTE;
    public static String CODIGO_ESTADO_CAJA_RECIBIDA;
    public static Hashtable HASH_TABLE_INCONSISTENCIAS;
    public static String INCONSISTENCIA_ENVIO_INEXISTENTE;
    public static String INCONSISTENCIA_ENVIO_GESTION_INVALIDA;
    public static String INCONSISTENCIA_CODIGO_BARRAS_INVALIDO;
    public static String INCONSISTENCIA_NODO_DESTINO_INVALIDO;
    public static String INCONSISTENCIA_ENVIO_EM_INVALIDA;
    public static String INCONSISTENCIA_ENVIO_CAJA_ASIGNADA;
    public static String INCONSISTENCIA_NODO_DESTINO_NO_CONFIGURADO;
    public static String INCONSISTENCIA_ENVIO_GESTION_ENTREGA;
    public static String INCONSISTENCIA_NODO_INVALIDO_CAJA;
    public static Hashtable HASH_TABLE_VALIDACIONES;
    public static String VALIDACION_ENVIO_INEXISTENTE;
    public static String VALIDACION_ENVIO_SIN_CAJA_ASOCIADA;
    public static String VALIDACION_ENVIO_OTRA_CAJA_ASOCIADA;
    public static String VALIDACION_CODIGO_BARRAS_INVALIDO;
    public static RandomStringUtils RANDOM_STRING_UTILS = new RandomStringUtils();
    public static String FILE_EXTENSION;
    public static String FOLDER_CARGUE_ARCHIVOS;
    public static String FOLDER_CARGUE_GESTION;
    public static String FOLDER_DESPACHOS_INCONSISTENCIAS;
    public static String FOLDER_DESPACHOS_VALIDACIONES;
    public static String FOLDER_DESPACHOS_ORDENES_PROCESO_POR_DESPACHAR;
    public static String FILE_SEPARATOR;
    public static String FILE_SEPARATOR_TO_HELP;
    public static String LINE_JUMP;
    public static String CAR_RETURN;
    public static String CODIGO_NO_RECUPERACION;
    public static String CODIGO_RECUPERACION;
    public static String PATH_VIEW_LABEL;
    public static String URL_SERVER_IMAGENES;
    public static String URL_SERVER_PRODUCCION;
    public static String PATH_WEB_APPLICATION_GENERATE_LABEL;
    public static String PARAMETER_CODIGO_CAJA;
    public static String PATH_WEB_APPLICATION_VIEW_LABEL;
    public static String PARAMETER_FILE_REPORT_NAME;
    
    public static String CODIGO_CLASIFICACION_NORMAL;
    public static String CODIGO_CLASIFICACION_ES_NO_COMPUTEC;
    public static String CODIGO_CLASIFICACION_NO_REQUIERE_TRANSPORTE;
    public static String CODIGO_CLASIFICACION_EMPRESA_NO_CERTIFICADA;
    
    /** Creates a new instance of ConstantesGenerales */
    public ConstantesGenerales() {
        DespachosSource despachosSource = DespachosSource.getInstance();
        CoreSource coreSource = CoreSource.getInstance();
        this.LOCALE_DEFAULT.setDefault(new Locale("es", "CO"));
        this.FACTORYDAO_CLASSNAME = despachosSource.getDespachosSetupKey("DaoFactoryClassName");
        this.SCHEMA = despachosSource.getDespachosSetupKey("schema");
        this.DECIMAL_FORMAT = new DecimalFormat(despachosSource.getDespachosSetupKey("decimalFormat"));
        this.SIMPLE_DATE_FORMAT = new SimpleDateFormat(despachosSource.getDespachosSetupKey("simpleDateFormat"), this.LOCALE_DEFAULT);
        this.SHORT_SIMPLE_DATE_FORMAT = new SimpleDateFormat(despachosSource.getDespachosSetupKey("shortSimpleDateFormat"), this.LOCALE_DEFAULT);
        this.SHORT_SIMPLE_DATE_FORMAT_TO_HELP = new SimpleDateFormat(despachosSource.getDespachosSetupKey("shortSimpleDateFormatToHelp"), this.LOCALE_DEFAULT);
        this.SHORT_SIMPLE_DATE_FORMAT_TO_HELP_AUX = new SimpleDateFormat(despachosSource.getDespachosSetupKey("shortSimpleDateFormatToHelpAux"), this.LOCALE_DEFAULT);
        
        this.CODIGO_GESTION_ENVIO_ALISTAMIENTO = despachosSource.getDespachosSetupKey("codigoGestionEnvioAlistamiento");
        this.CODIGO_GESTION_ENVIO_DESPACHO = despachosSource.getDespachosSetupKey("codigoGestionEnvioDespacho");
        this.CODIGO_GESTION_ENVIO_TRANSPORTE = despachosSource.getDespachosSetupKey("codigoGestionEnvioTransporte");
        this.CODIGO_GESTION_ENVIO_DISTRIBUCION = despachosSource.getDespachosSetupKey("codigoGestionEnvioDistribucion");
        this.CODIGO_GESTION_ENVIO_ENTREGA = despachosSource.getDespachosSetupKey("codigoGestionEnvioEntrega");
        this.CODIGO_GESTION_ENVIO_ENTREGA_NO_CERTIFICADA = despachosSource.getDespachosSetupKey("codigoGestionEnvioEntregaNoCertificada");
        this.CODIGO_GESTION_ENVIO_DISTRIBUCION_EXTERNA = despachosSource.getDespachosSetupKey("codigoGestionEnvioDistribucionExterna");
        
        this.CODIGO_PROVEEDOR_COMPUTEC = despachosSource.getDespachosSetupKey("codigoProveedorComputec");
        this.CODIGO_PROVEEDOR_NO_ASIGNADO = despachosSource.getDespachosSetupKey("codigoProveedorNoAsignado");
        this.CODIGO_ESTADO_DESPACHO_ABIERTO = despachosSource.getDespachosSetupKey("codigoEstadoDespachoAbierto");
        this.CODIGO_ESTADO_DESPACHO_EN_TRANSPORTE = despachosSource.getDespachosSetupKey("codigoEstadoDespachoEnTransporte");
        this.CODIGO_ESTADO_DESPACHO_ENTREGADO_INCOMPLETO = despachosSource.getDespachosSetupKey("codigoEstadoDespachoEntregadoIncompleto");
        this.CODIGO_ESTADO_DESPACHO_ENTREGADO = despachosSource.getDespachosSetupKey("codigoEstadoDespachoEntregado");
        this.CODIGO_ESTADO_CAJA_ABIERTA = despachosSource.getDespachosSetupKey("codigoEstadoCajaAbierta");
        this.CODIGO_ESTADO_CAJA_CERRADA = despachosSource.getDespachosSetupKey("codigoEstadoCajaCerrada");
        this.CODIGO_ESTADO_CAJA_EN_TRANSPORTE = despachosSource.getDespachosSetupKey("codigoEstadoCajaEnTransporte");
        this.CODIGO_ESTADO_CAJA_RECIBIDA = despachosSource.getDespachosSetupKey("codigoEstadoCajaRecibida");
        this.HASH_TABLE_INCONSISTENCIAS = new Hashtable();
        String[] inconsistencias = despachosSource.getDespachosSetupKey("inconsistencias").split("&");
        for (int i=0; i<inconsistencias.length; i++) {
            String[] inconsistencia = inconsistencias[i].split(";");
            this.HASH_TABLE_INCONSISTENCIAS.put(inconsistencia[0], inconsistencia[1]);
        }
        this.INCONSISTENCIA_ENVIO_INEXISTENTE = despachosSource.getDespachosSetupKey("inconsistenciaEnvioInexistente");
        this.INCONSISTENCIA_ENVIO_GESTION_INVALIDA = despachosSource.getDespachosSetupKey("inconsistenciaEnvioGestionInvalida");
        this.INCONSISTENCIA_CODIGO_BARRAS_INVALIDO = despachosSource.getDespachosSetupKey("inconsistenciaCodigoBarrasInvalido");       
        this.INCONSISTENCIA_NODO_DESTINO_INVALIDO = despachosSource.getDespachosSetupKey("inconsistenciaNodoDestinoInvalido");
        this.INCONSISTENCIA_ENVIO_EM_INVALIDA = despachosSource.getDespachosSetupKey("inconsistenciaEnvioEMInvalida");
        this.INCONSISTENCIA_ENVIO_CAJA_ASIGNADA = despachosSource.getDespachosSetupKey("inconsistenciaEnvioCajaAsignada");
        this.INCONSISTENCIA_NODO_DESTINO_NO_CONFIGURADO = despachosSource.getDespachosSetupKey("inconsistenciaNodoDestinoNoConfigurado");
        this.INCONSISTENCIA_ENVIO_GESTION_ENTREGA = despachosSource.getDespachosSetupKey("inconsistenciaEnvioGestionEntrega");
        this.INCONSISTENCIA_NODO_INVALIDO_CAJA = despachosSource.getDespachosSetupKey("inconsistenciaNodoInvalidoCaja");
        this.HASH_TABLE_VALIDACIONES = new Hashtable();
        String[] validaciones = despachosSource.getDespachosSetupKey("validaciones").split("&");
        for (int i=0; i<validaciones.length; i++) {
            String[] validacion = validaciones[i].split(";");
            this.HASH_TABLE_VALIDACIONES.put(validacion[0], validacion[1]);
        }
        this.VALIDACION_ENVIO_INEXISTENTE = despachosSource.getDespachosSetupKey("validacionEnvioInexistente");
        this.VALIDACION_ENVIO_SIN_CAJA_ASOCIADA = despachosSource.getDespachosSetupKey("validacionEnvioSinCajaAsociada");
        this.VALIDACION_ENVIO_OTRA_CAJA_ASOCIADA = despachosSource.getDespachosSetupKey("validacionEnvioOtraCajaAsociada");
        this.VALIDACION_CODIGO_BARRAS_INVALIDO = despachosSource.getDespachosSetupKey("validacionCodigoBarrasInvalido");
        this.FILE_EXTENSION = despachosSource.getDespachosSetupKey("fileExtension");
        this.FOLDER_CARGUE_ARCHIVOS = CoreSource.getInstance().getUtilidadesSetupKey("folderCargueArchivos");
        this.FOLDER_CARGUE_GESTION = despachosSource.getInstance().getDespachosSetupKey("folderCargueGestion");
        this.FOLDER_DESPACHOS_INCONSISTENCIAS = despachosSource.getInstance().getDespachosSetupKey("folderDespachosInconsistencias");
        this.FOLDER_DESPACHOS_VALIDACIONES = despachosSource.getInstance().getDespachosSetupKey("folderDespachosValidaciones");
        this.FOLDER_DESPACHOS_ORDENES_PROCESO_POR_DESPACHAR = despachosSource.getInstance().getDespachosSetupKey("folderDespachosOrdenesProcesoPorDespachar");
        this.FILE_SEPARATOR = despachosSource.getDespachosSetupKey("fileSeparator");
        this.FILE_SEPARATOR_TO_HELP = despachosSource.getDespachosSetupKey("fileSeparatorToHelp");
        this.LINE_JUMP = despachosSource.getDespachosSetupKey("lineJump");
        this.CAR_RETURN = despachosSource.getDespachosSetupKey("carReturn");
        this.CODIGO_NO_RECUPERACION = despachosSource.getDespachosSetupKey("codigoNoRecuperacion");
        this.CODIGO_RECUPERACION = despachosSource.getDespachosSetupKey("codigoRecuperacion");
        this.PATH_VIEW_LABEL = despachosSource.getDespachosSetupKey("pathViewLabel");
        this.URL_SERVER_IMAGENES = coreSource.getParametrosSetupKey("urlImagenes");
        this.URL_SERVER_PRODUCCION = coreSource.getParametrosSetupKey("urlServerProduccion");
        this.PATH_WEB_APPLICATION_GENERATE_LABEL = despachosSource.getDespachosSetupKey("pathWebApplicationGenerateLabel");
        this.PARAMETER_CODIGO_CAJA = despachosSource.getDespachosSetupKey("paremeterCodigoCaja");
        this.PATH_WEB_APPLICATION_VIEW_LABEL = despachosSource.getDespachosSetupKey("pathWebApplicationViewLabel");
        this.PARAMETER_FILE_REPORT_NAME = despachosSource.getDespachosSetupKey("paremeterFileReportName");
        
        this.CODIGO_CLASIFICACION_NORMAL = despachosSource.getDespachosSetupKey("codigoClasificacionNormal");
        this.CODIGO_CLASIFICACION_ES_NO_COMPUTEC= despachosSource.getDespachosSetupKey("codigoClasificacionEsNoComputec");
        this.CODIGO_CLASIFICACION_NO_REQUIERE_TRANSPORTE = despachosSource.getDespachosSetupKey("codigoClasificacionNoRequiereTransporte");
        this.CODIGO_CLASIFICACION_EMPRESA_NO_CERTIFICADA = despachosSource.getDespachosSetupKey("codigoClasificacionEmpresaNoCertificada");
    }
    
    public static ConstantesGenerales getInstance() {
        if (instance == null) {
            instance = new ConstantesGenerales();
        }
        return instance;
    }
}